home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / hardware / galer21.lha / GALer21 / Source / GALer / GALer.h < prev    next >
C/C++ Source or Header  |  1996-04-05  |  17KB  |  486 lines

  1. /******************************************************************************
  2. ** GALer.h
  3. *******************************************************************************
  4. **
  5. ** author:   Christian Habermann
  6. ** date:     07.02.1995
  7. **
  8. *******************************************************************************
  9. **
  10. ** description:
  11. ** This file includes some definitions and structures used by GALer.
  12. **
  13. *******************************************************************************
  14. **
  15. ** changes:
  16. ** date     |     author     |  comment
  17. **          |                |
  18. **          |                |
  19. ******************************************************************************/
  20.  
  21.  
  22.  
  23.  
  24.  
  25. /****************************** include files ********************************/
  26.  
  27. #ifndef  EXEC_TYPES_H
  28. #include <exec/types.h>
  29. #endif
  30.  
  31. #ifndef  __STDIO_H
  32. #include <stdio.h>
  33. #endif
  34.  
  35.  
  36.  
  37.  
  38.  
  39. /******************************* definitions *********************************/
  40.  
  41. #define GAL16V8         1               /* GAL types */
  42. #define GAL20V8         2
  43. #define GAL22V10        3
  44. #define GAL20RA10       4
  45. #define UNKNOWN         5
  46. #define NOT_SPECIFIED   6
  47.  
  48.  
  49. #define HW_GALER_1_0    1               /* hardware versions */
  50. #define HW_GALER_1_2    2
  51. #define HW_GALER_1_3    3
  52. #define HW_ELEKTOR_II  10
  53.  
  54.  
  55. #define EDITOR_STR_SIZE 25              /* string size for editor */
  56.  
  57.  
  58. #define IC1             3              /* IC numbers */
  59. #define IC2            11              /* IC2 only for Elektor- and */
  60. #define IC3             0              /* Maxon-GAL-programmer      */
  61. #define IC4             1
  62. #define IC5             2
  63. #define IC6a            0
  64. #define IC6c            4
  65. #define IC7             1
  66. #define IC10           10
  67.  
  68.  
  69. #define ON              1               /* LED status */
  70. #define OFF             0
  71.  
  72. #define YES             1
  73. #define NO              0
  74.  
  75. #define PROG            1               /* GAL mode */
  76. #define VERIFY          0
  77.  
  78. #define LOW             0
  79. #define HIGH            1
  80. #define INPUT_PIN       0
  81. #define OUTPUT_PIN      1
  82.  
  83. #define CONT_REQ        0               /* types of requester */
  84. #define INFO_REQ        1
  85. #define ERR_REQ         2
  86. #define GALTYPE_REQ     3
  87. #define ERASE_REQ       5
  88.  
  89. #define LOAD            0               /* types of file-requesters */
  90. #define SAVE            1
  91.  
  92.                                      /* duration of the STR strobe */
  93. #define _80MS           80000L       /* in micros for programming  */
  94. #define _10MS           10000L       /* and erasing                */
  95. #define _40MS           40000L
  96. #define _50MS           50000L
  97. #define _100MS          100000L
  98. #define VERIFY_TIME     5L            /* read */
  99.  
  100.  
  101.                                       /* voltages */
  102. #define V12_00          4             /* 12.00V */
  103. #define V14_00          3             /* 14.00V */
  104. #define V14_50          2             /* 14.50V */
  105. #define V15_75          1             /* 15.75V */
  106. #define V16_50          0             /* 16.50V */
  107.  
  108.  
  109. #define COPYGAL         1       /* used by ProgJedecToGAL function */
  110. #define PROGGAL         2
  111.  
  112.                                 /* GAL16V8 */
  113. #define LOGIC16         0               /* location of the fuses */
  114. #define XOR16           2048            /* in the JEDEC file     */
  115. #define SIG16           2056
  116. #define AC116           2120
  117. #define PT16            2128
  118. #define SYN16           2192
  119. #define AC016           2193
  120. #define NUMOFFUSES16    2194
  121.                                         /* GAL20V8 */
  122. #define LOGIC20         0               /* location of the fuses */
  123. #define XOR20           2560            /* in the JEDEC file     */
  124. #define SIG20           2568
  125. #define AC120           2632
  126. #define PT20            2640
  127. #define SYN20           2704
  128. #define AC020           2705
  129. #define NUMOFFUSES20    2706
  130.  
  131.                                         /* GAL22V10 */
  132. #define NUMOFFUSES22V10 5892            /* location of the fuses */
  133. #define XOR22V10        5808            /* in the JEDEC file     */
  134. #define SYN22V10        5809
  135. #define SIG22V10        5828
  136.  
  137.                                         /* GAL20RA10 */
  138. #define NUMOFFUSES20RA10 3274           /* location of the fuses */
  139. #define XOR20RA10        3200           /* in the JEDEC file     */
  140. #define SIG20RA10        3210
  141.  
  142.  
  143. #define LOGIC16_SIZE    2048            /* number of bits for XOR etc. */
  144. #define LOGIC20_SIZE    2560
  145. #define LOGIC22V10_SIZE 5808
  146. #define LOGIC20RA10_SIZE 3200
  147. #define ROW_SIZE_16V8   64
  148. #define ROW_SIZE_20V8   64
  149. #define ROW_SIZE_22V10  132
  150. #define ROW_SIZE_20RA10 80
  151. #define XOR_SIZE        8
  152. #define SIG_SIZE        64
  153. #define AC1_SIZE        8
  154. #define PT_SIZE         64
  155. #define SYN_SIZE        1
  156. #define AC0_SIZE        1
  157. #define ACW_SIZE        82              /* architecture control word (ACW) */
  158.  
  159. #define MAX_FUSE_ADR16          31      /* addresses of the GALs */
  160. #define SIG_ADR16               32      /* (fuer Fan-Post :-))   */
  161. #define MAX_FUSE_ADR20          39
  162. #define SIG_ADR20               40
  163. #define MAX_FUSE_ADR22V10       43
  164. #define SIG_ADR22V10            44
  165. #define MAX_FUSE_ADR20RA10      39
  166. #define SIG_ADR20RA10           40
  167. #define ACW_ADR                 60
  168. #define SECURITY_ADR            61
  169. #define ERASE_ADR               63
  170.  
  171.  
  172.                             /* the following definitions are */
  173.                             /* used by GALer's assembler     */
  174.  
  175. #define ASSEMBLER       0         /* assemble whole file -> JEDEC       */
  176. #define OPTIMIZER       1         /* assemble up to the equationd, then */
  177.                                   /* return (used by the optimizer )    */
  178.  
  179.                                   /* output's polarity: */
  180. #define ACTIVE_LOW      0             /* pin is high-active */
  181. #define ACTIVE_HIGH     1             /* pin is low-active  */
  182.  
  183.                                   /* type of the pin: */
  184. #define NOTUSED         0             /* pin not used up to now */
  185. #define NOTCON          0             /* pin not used           */
  186. #define INPUT           2             /* input                  */
  187. #define COMOUT          3             /* combinational output   */
  188. #define TRIOUT          4             /* tristate output        */
  189. #define REGOUT          5             /* register output        */
  190. #define COM_TRI_OUT     6             /* either tristate or     */
  191.                                       /* combinational output   */
  192.  
  193.                                   /* tristate control: */
  194. #define NO_TRICON       0             /* no tristate control defined       */
  195. #define TRICON          1             /* tristate control defined          */
  196. #define TRI_VCC         2             /* permanent low  impedance          */
  197. #define TRI_GND         3             /* permanent high impedance          */
  198. #define TRI_PRO         4             /* tristate control via product term */
  199.  
  200.  
  201. #define NC_PIN          30
  202.  
  203. #define MODE1           1               /* modes (SYN, AC0) */
  204. #define MODE2           2
  205. #define MODE3           3
  206.  
  207.  
  208. #define MAX_SUFFIX_SIZE 6               /* max. string length of a legal */
  209.                                         /* suffix */
  210.  
  211.  
  212.                             /* the following definitions are */
  213.                             /* used by GALer's optimizer     */
  214.  
  215. #define NEGATION        0x80            /* bit 7 = 1 if pinname is */
  216.                                         /* introduced by a'/'      */
  217. #define EQUASKIP        0xFE            /* skip equation   */
  218. #define EQUAEND         0xFF            /* end of equation */
  219. #define EQUASEND        0x00            /* end of equation part, the next */
  220.                                         /* word should be DESCRIPTION     */
  221.  
  222. #define ENTRY_SIZE      256             /* number of entries per buffer */
  223.  
  224. #define SIZE_OF_EQUASTRING 80
  225.  
  226.  
  227.  
  228. #define FIRST_GAL_GADID      1          /* lowest ID for the GAL gadgets */
  229.                                         /* (must be > 0)                 */
  230.  
  231. #define NUM_OF_GAL_GADGETS  32          /* number of gadgets concerning  */
  232.                                         /* to the symbolic GAL           */
  233.  
  234.                                         /* menu IDs */
  235.  
  236. enum {  FIRST_MENU_ID = 100,
  237.  
  238.         MEN_PROJECT, MEN_ABOUT, MEN_HARDVER, MEN_VER11, MEN_VER12,
  239.         MEN_VER13, MEN_VERELEKTOR, MEN_SAVECONFIG, MEN_QUIT,
  240.  
  241.         MEN_GALTYPE, MEN_16V8, MEN_20V8, MEN_22V10, MEN_20RA10, MEN_TYPEREQ,
  242.  
  243.         MEN_GAL, MEN_PROG, MEN_COPY, MEN_ERASE, MEN_CMP, MEN_CLEAR,
  244.         MEN_SETSEC, MEN_TESTSEC, MEN_WRITE,
  245.  
  246.         MEN_GALASM, MEN_ASSEMBLE,
  247.  
  248.         MEN_GALDIS, MEN_READSIG, MEN_READACW, MEN_READINFO, MEN_READJED,
  249.         MEN_READJEDPARA, MEN_REASM,
  250.  
  251.         MEN_TOOLS, MEN_SHOWPIN, MEN_CLEARPIN, MEN_CALLCHECKER, MEN_OPTIMIZER,
  252.         MEN_EDIT, MEN_CALLEDIT, MEN_HELP,
  253.  
  254.         MEN_CHECKER, MEN_EXITCHECKER,
  255.  
  256.         LAST_MENU_ID
  257.      };
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264. /******************************** structures *********************************/
  265.  
  266.                                         /* this structure is used to store   */
  267.                                         /* GALer's configuration             */
  268. struct  Configuration { BYTE GALType;          /* type of GAL                */
  269.                         BYTE GALTypeReq;       /* TRUE=Requester für GAL-Typ */
  270.                         BYTE GenJedec;         /* generate JEDEC file?       */
  271.                         BYTE GenFuse;          /* generate fuse file?        */
  272.                         BYTE GenChip;          /* generate chip file?        */
  273.                         BYTE GenPin;           /* generate pin file?         */
  274.                         BYTE AutoSave;         /* save automatically?        */
  275.                         BYTE AutoGAL;          /* get type of GAL automatic.?*/
  276.                         BYTE ProgEmptyTest;    /* blank test before prog.?   */
  277.                         BYTE ProgVerify;       /* verify after programming?  */
  278.                         BYTE CopyEmptyTest;    /* blank test before copying? */
  279.                         BYTE CopyVerify;       /* verify after copying?      */
  280.                         BYTE EraseEmptyTest;   /* blank test after erasing?  */
  281.                         BYTE JedecSecBit;      /* set security bit in JEDEC? */
  282.                         BYTE JedecFuseChk;     /* calc. fuse checksum?       */
  283.                         BYTE JedecFileChk;     /* calc. file checksum?       */
  284.                         BYTE HardwareVersion;  /* used hardware version      */
  285.                         char EditorStr[EDITOR_STR_SIZE];
  286.                       };
  287.  
  288.  
  289.                                         /* this structure is used to store */
  290.                                         /* the fuses in a kind of JEDEC    */
  291.                                         /* format                          */
  292.  
  293. struct  JedecStruct { BYTE GALLogic[5808];      /*max. size of fuse matrix */
  294.                       BYTE GALXOR  [10];        /* XOR bits                */
  295.                       BYTE GALSig  [64];        /* signature               */
  296.                       BYTE GALAC1  [8];         /* AC1 bits                */
  297.                       BYTE GALPT   [64];        /* product term disable    */
  298.                       BYTE GALSYN;              /* SYN bit                 */
  299.                       BYTE GALAC0;              /* AC0 bit                 */
  300.                       BYTE GALS1   [10];        /* S1 bits for 22V10       */
  301.                     };
  302.                     
  303.  
  304.                                         /* used to store infos about a pin */
  305. struct  Pin             { BYTE p_Neg;        /* polarity of pin */
  306.                           BYTE p_Pin;        /* pin number      */
  307.                         };
  308.  
  309.                                         /* used to store infos about an OLMC */
  310.  
  311. struct  GAL_OLMC        { BYTE Active;       /* output's polarity           */
  312.                           BYTE PinType;      /* type of pin (input,...)     */
  313.                           BYTE TriCon;       /* user def. tristate control? */
  314.                           BYTE Clock;        /* user def. clock equation?   */
  315.                           BYTE ARST;         /* user def. ARST equation?    */
  316.                           BYTE APRST;        /* user def. APRST equation?   */
  317.                           BYTE FeedBack;     /* is there a feedback?        */
  318.                         };
  319.  
  320.                                         /* this structure is used to store  */
  321.                                         /* some datas in a chained list     */
  322.                                         /* e.g. the coded equations for the */
  323.                                         /* optimizer                        */
  324.  
  325. struct  Buffer  { struct Buffer *Next;
  326.                   struct Buffer *Prev;
  327.                   UBYTE  Entries[ENTRY_SIZE];   /* data area */
  328.                 };
  329.                                                     
  330.                                         /* used to store results and     */
  331.                                         /* parameters of functions       */
  332.                                         /* which deal with chained lists */
  333.  
  334. struct  ActBuffer  { struct Buffer *ThisBuff;  /* pointer to current buffer */
  335.                      UBYTE       *Entry;       /* pointer to data area      */
  336.                      UBYTE       *BuffEnd;     /* pointer to the end of the */
  337.                    };                          /* buffer                    */
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344. /*************************** function declartions ****************************/
  345.  
  346.  
  347. /* Port.asm */
  348. void    InitHardware(void);
  349. void    EnableOutput(void);
  350. void    DisableOutput(void);
  351. void    InitParPort(void);
  352. void    RestoreParPort(void);
  353. void    WriteByte(int, int);
  354. int     ReadByte(int);
  355. void    VeditOn(void);
  356. void    VeditOff(void);
  357. void    LED(int);
  358. void    EnableVcc(void);
  359. void    DisableVcc(void);
  360. void    EnableVEdit(void);
  361. void    DisableVEdit(void);
  362. void    SetRow(int);
  363. void    SDIn(int);
  364. int     SDOut(void);
  365. void    Clock(void);
  366. void    STRImpuls(long);
  367. void    EditMode(int);
  368. void    ExitEditMode(void);
  369. void    SetPV(int);
  370. void    SetVolt(int);
  371. void    SetGAL(int);
  372. void    SetPESSAVE(int);
  373. void    SetERASE(int);
  374. void    SetCLR(int);
  375. void    SetBE(int);
  376. void    SetARCH(int);
  377. void    SetANDBE(int);
  378.  
  379.  
  380. /* GAL.c */
  381. void  ProgramGAL(void);
  382. void  CopyGAL(void);
  383. int   CheckGAL(void);
  384. void  TestSecurity(void);
  385. void  Compare(void);
  386. void  PrintACW(void);
  387. void  PrintSignature(void);
  388. int   ProgJedecToGAL(int mode);
  389. void  ReadGALToJedec(void);
  390. void  SetSecurity(int flag);
  391. void  Loeschen(void);
  392. void  EraseIt(void);
  393. void  Leertest(void);
  394.  
  395.  
  396. /*GALasm .c */
  397. int   AssembleInputFile(int OpMode);
  398. void  SetAND(int row, int pinnum, int negation);
  399. void  IsPinName(UBYTE *pinnames, int numofpins);
  400. int   GetNextChar(void);
  401. int   GetNextLine(void);
  402. void  AsmError(int errornum, int pinnum);
  403. void  WriteChipFile(void);
  404. void  WritePinFile(void);
  405. void  WriteFuseFile(void);
  406. void  WriteSpaces(FILE *fp, int numof);
  407. void  WriteRow(FILE *fp, int row);
  408. int   IsOR(char);
  409. int   IsAND(char);
  410. int   IsNEG(char);
  411. void  Is_AR_SP(UBYTE *ptr);
  412.  
  413.  
  414. /* Optimizer.c */
  415. int  Optimizer(void);
  416.  
  417.  
  418. /* Checker.c */
  419. void  Checker(ULONG gadID);
  420. void  ToggleChecker(void);
  421. void  SetSymbolGAL(int type);
  422. void  PrintPinNames(void);
  423. void  ResetPinNames(void);
  424.  
  425.  
  426. /* GALData.c */
  427. UBYTE GetByte(UBYTE *ptr);
  428. int   ReadGALParameter(int checkflag);
  429. void  GALInfo(void);
  430. int   GALAType(void);
  431.  
  432.  
  433. /* Sub.c */
  434. void  Schreibverhalten(void);
  435. void  JedecRequester(void);
  436. void  About(void);
  437. int   mystrcmp(char *cptr1, char *cptr2);
  438. int   MyFileReq(char *headtxt, char *showtxt, int showreq, int mode);
  439. int   TxtRequest(UBYTE *text, UBYTE *gadget1_txt, UBYTE *gadget2_txt);
  440. int   GALTypeRequest(UBYTE *text);
  441. int   AsmRequester(void);
  442. long  FileSize(UBYTE *filename);
  443. int   ReadFile(UBYTE *filename, LONG filesize, UBYTE *filebuff);
  444. void  ErrorReq(int errornum);
  445. void  PrintText(UBYTE *text, int newline);
  446. void  PrintErrorLine(int line);
  447. void  LoadConfig(void);
  448. void  SaveConfig(void);
  449. void  SetGALType(int galtype);
  450. int   AddByte(struct ActBuffer *buff, UBYTE code);
  451. int   AddString(struct ActBuffer *buff, UBYTE *strnptr);
  452. void  IncPointer(struct ActBuffer *buff);
  453. void  DecPointer(struct ActBuffer *buff);
  454. void  FreeBuffer(struct Buffer *buff);
  455. void  SelectEditor(void);
  456. void  CallEditor(void);
  457. void  WaitForTimer(ULONG micro);
  458. void  HelpOnHelp(void);
  459. int   CompareRequester(void);
  460.  
  461.  
  462. /* Reasm.c */
  463. void   Reassembler(void);
  464.  
  465.  
  466. /* Jedec.c */
  467. void  PutJedec(void);
  468. int   FileChecksum(struct ActBuffer buff);
  469. int   FuseChecksum(int galtype);
  470. int   MakeJedecBuff(struct ActBuffer buff, int galtype);
  471. void  WriteJedecFile(int galtype);
  472. int   SearchNextChar(void);
  473. int   SearchNextAsterix(void);
  474. int   GetJedec(UBYTE *jedecfile);
  475. void  JedecError(int errornum, int flag);
  476.  
  477.  
  478. /* Localize.c */
  479. void  LocalizeText(void);
  480.  
  481.  
  482.  
  483.  
  484.  
  485. /* EOF */
  486.